package com.lee.system;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.Page;
import com.lee.base.BaseService;
import com.lee.page.PageDomain;
import com.lee.page.PageResult;
import com.lee.system.api.IDictDataService;
import com.lee.system.entity.DictData;
import com.lee.system.mapper.DictDataMapper;
import com.lee.utils.Convert;
import com.lee.utils.ShiroUtils;
import com.lee.utils.StringUtils;


/**
 * 字典 业务层处理
 * 
 * @author LiPengFei
 *
 */
@Service
public class DictDataServiceImpl extends BaseService implements IDictDataService {
	@Autowired
	private DictDataMapper dictDataMapper;

	/**
	 * 根据条件查询字典数据
	 * 
	 * @param dictData
	 *            字典数据信息
	 * @return 字典数据集合信息
	 */
	@Override
	public List<DictData> selectDictDataList(DictData dictData) {
		return dictDataMapper.selectDictDataList(dictData);
	}
	/**
	 * 根据条件分页查询字典数据
	 * 
	 * @param dictData
	 *            字典数据信息
	 * @return 字典数据集合信息
	 */
	@Override
	public PageResult selectDictDataList(DictData dictData,PageDomain pageDomain) {
		startPage(pageDomain);
		Page<DictData> page =  (Page<DictData>)dictDataMapper.selectDictDataList(dictData);
		return  new PageResult(page.getTotal(), page.getResult());
	}

	/**
	 * 根据字典类型查询字典数据
	 * 
	 * @param dictType
	 *            字典类型
	 * @return 字典数据集合信息
	 */
	@Override
	public List<DictData> selectDictDataByType(String dictType) {
		return dictDataMapper.selectDictDataByType(dictType);
	}

	/**
	 * 根据字典数据ID查询信息
	 * 
	 * @param dictCode
	 *            字典数据ID
	 * @return 字典数据
	 */
	@Override
	public DictData selectDictDataById(Long dictCode) {
		return dictDataMapper.selectDictDataById(dictCode);
	}

	/**
	 * 通过字典ID删除字典数据信息
	 * 
	 * @param dictCode
	 *            字典数据ID
	 * @return 结果
	 */
	@Override
	public int deleteDictDataById(Long dictCode) {
		return dictDataMapper.deleteDictDataById(dictCode);
	}

	/**
	 * 批量删除字典数据
	 * 
	 * @param ids
	 *            需要删除的数据
	 * @return 结果
	 */
	@Override
	public int deleteDictDataByIds(String ids) {
		return dictDataMapper.deleteDictDataByIds(Convert.toStrArray(ids));
	}

	/**
	 * 保存字典数据信息
	 * 
	 * @param dictData
	 *            字典数据信息
	 * @return 结果
	 */
	@Override
	public int saveDictData(DictData dictData) {
		Long dictCode = dictData.getDictCode();
		dictData.setUpdateBy(ShiroUtils.getLoginName());
		if (StringUtils.isNotNull(dictCode)) {
			return dictDataMapper.updateDictData(dictData);
		} else {
			return dictDataMapper.insertDictData(dictData);
		}
	}
    /**
     * 根据字典类型和字典键值查询字典数据信息
     * 
     * @param dictType 字典类型
     * @param dictValue 字典键值
     * @return 字典标签
     */
    @Override
    public String selectDictLabel(String dictType, String dictValue)
    {
        return dictDataMapper.selectDictLabel(dictType, dictValue);
    }
}
